home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / Amiga_Mail_Vol2 / Archives / Plain / jf93.lha / ASCII / A1200 / A1200CPU.txt < prev   
Encoding:
Text File  |  1993-03-01  |  4.4 KB  |  102 lines

  1. (c) Copyright 1993 Commodore-Amiga, Inc.   All rights reserved.
  2. The information contained herein is subject to change without notice,
  3. and is provided "as is" without warranty of any kind, either expressed
  4. or implied.  The entire risk as to the use of this information is
  5. assumed by the user.
  6.  
  7.  
  8. A1200 CPU Card Expansion RAM
  9.  
  10.  
  11. by Michael Sinz
  12.  
  13.  
  14.  
  15.  
  16. When the Amiga OS boots, it automatically notices and utilizes
  17. expansion hardware (such as RAM).  Prior to the A3000, the only CPU
  18. native to any Amiga was the MC68000, which could only address a
  19. 24-bit wide address space.  As a result, the address space that was
  20. available to these machines was only 24 bits wide.  CPU expansion
  21. products for the MC68000-based Amigas (like the A2630 for the A2000)
  22. can utilize address space beyond the 24-bit limit, but the CPU board
  23. cannot use the AutoConfig process to add expansion RAM in the address
  24. space beyond the 24-bit limit.
  25.  
  26. Like the MC68000 based Amigas, the Amiga 1200 also has a CPU that
  27. only addresses a 24-bit wide address space, the MC68EC020.  Also like
  28. most of the MC68000 based Amigas, it is possible to add a CPU
  29. expansion device.  One way the A1200 differs from its 24-bit siblings
  30. is the A1200 has set aside a 128 Megabyte range of address space
  31. ($0800 0000 through $0FFF FFFF) specifically for such a device (just
  32. like the A3000).  Any expansion RAM on the A1200's CPU card should
  33. appear in this range.
  34.  
  35. The Release 3 OS in the current A1200 is not smart enough to
  36. recognize a 32-bit CPU expansion device vs. a 24-bit expansion
  37. device.  As a result, the system assumes that the expansion device is
  38. a 24-bit expansion device.  If a user expands their A1200 with a
  39. 32-bit CPU card that has 32-bit expansion memory on it, the OS cannot
  40. automatically add the CPU card's expansion memory during the
  41. autoconfig process.  The CPU card's ROM has to add the memory to the
  42. system.
  43.  
  44. The code to make the A1200 smart enough to recognize a 32-bit CPU
  45. card will be in a future ROM revision.  This change will allow the OS
  46. to automatically notice and add the CPU card's expansion RAM.  This
  47. makes it possible for the system to add this 32-bit memory to the
  48. A1200's system memory relatively early in the boot process.  Because
  49. the memory is available earlier in the boot process, Exec has the
  50. opportunity to use the 32-bit memory for system purposes (this can
  51. include the supervisor stack, ExecBase, and most other library bases).
  52.  
  53. This change presents a minor problem for an A1200 CPU card that adds
  54. its own memory.  Before the CPU card can add its memory to the system
  55. memory list, it must make sure the OS has not already added that
  56. memory.  The CPU card can use the following code to test if the A1200
  57. has already added the CPU card's expansion memory.  This code queries
  58. the system about the type of memory located at the low end of the
  59. coprocessor slot expansion address range.  If the system has already
  60. added memory at this location, TypeOfMem() returns the
  61. characteristics of that memory.  If no memory is at that location,
  62. TypeOfMem() returns zero.
  63.  
  64.  
  65.     /*
  66.      * Note that we check the memory 16K from the start as the
  67.      * first few bytes may have been used by the OS when doing
  68.      * the automatic testing...
  69.      */
  70.     if (!TypeOfMem(0x08001000))
  71.     {
  72.         /*
  73.          * If TypeOfMem() returned 0, the memory does not
  74.          * exist.  At this point, you can do whatever
  75.          * memory tests that may be needed and then
  76.          * AddMemList() the memory as needed.
  77.          *
  78.          * **NOTE**  Do *NOT* do the memory test if the memory
  79.          * has already been added as it may be in use by some
  80.          * very important things, including interrupt vectors
  81.          * and/or code.
  82.          */
  83.         AddMemList(size,MEMF_FAST|MEMF_PUBLIC,pri,0x08000000,"CPU RAM");
  84.     }
  85.  
  86.  
  87. More About the New A1200 Code
  88.  
  89. The code to make the A1200 detect 32-bit CPU cards will also notice
  90. ``natural wrapping'' in the board's memory.  If a board has only a
  91. limited amount of memory, it is possible to design the board so that
  92. the physical memory is accessible at many addresses at regular
  93. address intervals.  For example, if the board has four megabytes of
  94. memory, that memory could be accessed at four megabyte intervals
  95. (address $0800 0000, $0840 0000, $0880 0000, and so on).
  96.  
  97. Because the OS notices the wrap, CPU cards can use a more economical
  98. design because they don't have to be as complex.  It also cuts down
  99. on the need for jumpers or switch settings.  The code requires that
  100. the A1200 CPU board's memory sizes be in multiples of 1 megabyte
  101. (512K is not supported).
  102.